Contexts For Mac无限试用

0x01 定位关键点

License点开会有提示字样,关键字:days of trial left

image-20221212174856312

hopper打开程序,搜索关键字,定位到CTApplicationController的trialStatus方法

image-20221212175050662

image-20221212175242402

根据上图的逻辑,可以看到是从rax中取时间,然后从这个时间开始计算剩余的天数,然后进入[self trialStartDate]看一下

image-20221212180118134

可以看出来是从本地文件中取CTStartDate2的内容,没有什么校验机制,所以我们需要找出这个文件位置,NSFileManager这个类就是操作文件的,参数内容也是固定的,所以我们可以attach进程之后直接调用相同的方法就可以知道具体的文件目录

image-20221212181924270

然后文件名可以看到.%@.plist的字样,这个后缀一般就是属性文件,可以确定是格式化输出文件名,结合上面的目录就可以得到具体位置

image-20221212182133121

0x02 hook获取文件地址

let val1 = ObjC.classes.NSFileManager.defaultManager().URLsForDirectory_inDomains_(0xe,0x1);
console.log(val1);
let val2 = ObjC.classes.NSBundle.mainBundle().bundleIdentifier();
console.log(val2);

image-20221212182619789

0x03 Crack

执行之后可以看到上面的输出,由此确定具体的文件是:~/Library/Application Support/.com.contextsformac.Contexts.plist

这是一个隐藏文件,打开之后就会看到内容,将时间值往后改就可以了,这样就会将试用到期时间从未来的时间开始算

image-20221212182935134